<?php

/* Classe consulta - representar&aacute; uma consulta feita no banco de dados  */

class consulta {

    public $comando;
    public $numlinhas;
    public $posicao;
    public $resultado;
    public $dados;
    public $tipo;

//Metodo para executar uma consulta
    function determinartipo() {
        $this->comando = ltrim($this->comando);
        if (strtoupper(substr($this->comando, 0, 6)) == "SELECT")
            $this->tipo = 1;
        else
            $this->tipo = 0;
    }

    function executar($sql, $bd, $assoc = false) {
        $this->comando = $sql;
        $this->numlinhas = 0;
        $this->determinartipo();
        @mysqli_set_charset($bd, "utf8");
        $this->resultado = @mysqli_query($bd, $sql);
        if ($this->resultado) {
            if ($this->tipo == 1) {
                $this->numlinhas = mysqli_num_rows($this->resultado);
                $this->posicao = 0;
                if ($this->numlinhas > 0) {
                    if ($assoc)
                        $this->dados = mysqli_fetch_assoc($this->resultado);
                    else
                        $this->dados = mysqli_fetch_array($this->resultado);
                }
            } else {
                $this->numlinhas = mysqli_affected_rows($bd);
                $this->posicao = 0;
            }
        }
        return $this->resultado;
    }

    function posicionar($pos, $assoc = false) {
        if (($pos >= 0) and ($pos <= $this->numlinhas - 1) and ($this->tipo == 1)) {
            mysqli_data_seek($this->resultado, $pos);
            if ($assoc)
                $this->dados = mysqli_fetch_assoc($this->resultado);
            else
                $this->dados = mysqli_fetch_array($this->resultado);
            $this->posicao = $pos;
            return true;
        } else
            return false;
    }

    function proximo($assoc = false) {
        return $this->posicionar($this->posicao + 1, $assoc);
    }

    function anterior($assoc = false) {
        return $this->posicionar($this->posicao - 1, $assoc);
    }

    function primeiro($assoc = false) {
        return $this->posicionar(0, $assoc);
    }

    function ultimo($assoc = false) {
        return $this->posicionar($this->numlinhas - 1, $assoc);
    }

    function escreverregistro() {
        return print_r($this->dados);
    }

}

?>